//
//  main.m
//  02-ClassObjective-C
//
//  Created by dllo on 16/7/5.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Fraction.h"
int main(int argc, const char * argv[]) {
   
    //1.快捷键
    //command + 0 开/收起左边栏
    //command + option + 0 开/收右边栏
    //command + shift + Y  开/收下边栏
    //command + R 运行
    //command + B 编译
    //command + Z 撤销
    //command + shift + Z 反撤销
    
    //2.移动光标
    //command + ← 移动到当前行的最前面
    //command + → 移动到当前行的最后面
    //command + ↑ 移动到所有行的最上方
    //command + ↓ 移动到所有行的最下面
    //3.选中文字
    //shift + ← 选中向左一个字
    //shift + → 选中向右一个字
    //shift + ↑ 当前光标下,选中上一行.
    //shift + ↓ 当前光标下,选中下一行.
    //command + shift + ← 选中从光标开始,左边所有的文字.
    //command + shift + → 选中从光标开始,右边所有的文字.
    //command + shift + ↑ 选中从光标开始,上边所有的文字.
    //command + shift + ↓ 选中从光标开始,下边所有的文字.
    
    //创建类
    //command + n 创建文件
    //command + shift + n 
    
    
    //1.类和对象
    //类:一个具有相同特征和行为的事物抽象集合.
    //对象:类的实例,也称作类的实现.
    //面向对像的思想,万物都是对象.
    //面向对象语言是面向对象思想的具体表现
    //OOP 面向对象编程
    //OOD 面向对象设计
    //面向对象三大特征(特性) 封装 继承 多态 提高代码的复用
    
    
    //2.Objective-C(OC)
    //与C语言的区别
    //OC属于C语言的扩展
    //OC有类的概念
    //OC中声明属性和方法在 .h中
    //OC具体实现在 .m文件
    //.mm 是C++的文件,在这个文件中可以编写C++代码
    
    
    
    //OC中的根类 NSOject
    
    //3.创建OC的实例
    //1> 消息语法 [obje dosomething];
    //向objec对象去发送一个dosomething的方法,让他去调用
    //类方法的调用(由类方法去调用其+方法)
    //+alloc开辟空间
    NSObject *obje = [NSObject alloc];
    //实例方法的调用

    NSObject *newObject = [obje init];
    //创建一个Person对象
    
    Person *per = [[Person alloc] init];
    //公开的成员变量可以直接通过 ->赋值,取值
    per->_age = 10;
    NSLog(@"%ld", per->_age);
    //受保护的成员不能通过->去访问
    
    
    //id 与 instancetype
    //instancetype 在做为参数返回值的时候与id是一样的,系统编译器会把id类型转化成instancetype(当前对象类型)
    //id可以做为变量类型去使用,但instancetype不可以
    id objec = [[NSObject alloc] init];
    
    [per sleep:10];
    //set 与 get 方法的使用
    [per setName:@"sdf"];
    
    NSString *name = [per name];
    
    NSLog(@"name:%@", name);
    
    
    
    
//************************************************//
    
 //分数练习
    
    Fraction *fractionOfFirst = [Fraction fractionWithNumerator:1 denominator:2];
    Fraction *fractionOfTwo = [Fraction fractionWithNumerator:2 denominator:3];
    //分数相加
    
    Fraction *newFracionOfAdd = [fractionOfFirst AddOfFraction:fractionOfTwo];
    NSLog(@"两分数相加为:%ld/%ld", newFracionOfAdd.numerator, newFracionOfAdd.denominator);
    Fraction *newFractionOfReduction = [fractionOfFirst reductionOfFration:fractionOfTwo];
    NSLog(@"两个分数相减为:%ld/%ld", newFractionOfReduction.numerator, newFractionOfReduction.denominator);
    
    Fraction *newFractionOfMutiply = [fractionOfFirst multiplyOfFraction:fractionOfTwo];
    NSLog(@"两个分数相乘为:%ld/%ld", newFractionOfMutiply.numerator, newFractionOfMutiply.denominator);
    
    Fraction *newFractionOfDivide = [fractionOfFirst divideOfFraction:fractionOfTwo];
    NSLog(@"两个分数相除为:%ld/%ld", newFractionOfDivide.numerator, newFractionOfDivide.denominator);
    
    
    
    
    
    
    
    
    
    
    
    return 0;
}
